package com.fd.array;

public class ArrayDome4 {
    public static void main(String[] args) {
        start();
    }
    public static void start() {
        // 1,做牌： 创建一个动态初始化的数组存储54张牌。
        String[] poker = new String[54];
        // poker = [null,null,null,....]
        //           0      1    2

        // 2, 准备四种花色，还有点数，在开始做牌存入数组中去。
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
         // 3,遍历点数，遍历花色，将牌存入数组中去。
        int index = 0;
        for (int i = 0; i < numbers.length; i++) {
            for (int j = 0; j < colors.length; j++) {
                poker[index++] = colors[j] + numbers[i];
//                index++;
            }
        }
        // 4,存入大小王
        poker[index++] = "大王";
        // 所有牌都弄好了 没必要++
        poker[index] = "小王";

        // 5,打印牌
        for (int i = 0; i < poker.length; i++) {
            System.out.print(poker[i] + "\t");
        }

        // 6,洗牌 把54张牌数组打乱
        for (int i = 0; i < poker.length; i++) {
            // 随机获取一个索引
            int index1 = (int)(Math.random() * poker.length); // [0,53) => [0,53]
            // 随机获取另一个索引
            int index2 = (int)(Math.random() * poker.length); // [0,53) => [0,53]

            // 每一次需要让index1和index2这两个索引位置处数据进行交换。
            // 1,创建一个临时变量,临时保存index1处的数据
            String temp = poker[index1];
            // 2,把index2的数据赋值给index1
            poker[index1] = poker[index2];
            poker[index2] = temp;
        }
        // 7,打印洗牌之后的牌
        System.out.println("\n");
        System.out.println("洗牌之后的牌：");
        for (int i = 0; i < poker.length; i++) {
            System.out.print(poker[i] + "\t");
        }
    }
}
